13.2.1 容器与非持久数据

毫无疑问,容器擅长无状态和非持久化事务。

每个容器都被自动分配了本地存储。默认情况下,这是容器全部文件和文件系统保存的地方。读者可能听过一些非持久存储相关的名称,如本地存储、GraphDriver存储以及SnapShotter存储。总之,非持久存储属于容器的一部分,并且与容器的生命周期一致——容器创建时会创建非持久化存储,同时该存储也会随容器的删除而删除。很简单。

在Linux系统中,该存储的目录在 /var/lib/docker/<storage-driver>/ 之下,是容器的一部分。在Windows系统中位于 C\ProgramData\Docker\windowsfilter\ 目录之下。

如果在生产环境中使用Linux运行Docker,需要确认当前存储驱动(GraphDriver)与Linux版本是否相符。下面列举了一些指导建议。

  • RedHat Enterprise Linux:Docker 17.06或者更高的版本中使用 Overlay2 驱动。在更早的版本中,使用 Device Mapper 驱动。这适用于Oracle Linux以及其他Red Hat相关发行版。
  • Ubuntu:使用 Overlay2 或者 AUFS 驱动。如果读者正在使用Linux4.x或者更高版本的内核,建议使用 Overlay2
  • SUSE Linux Enterprise Server:使用 Btrfs 存储驱动。
  • Windows:Windows只有一种驱动,已经默认设置。

上述清单只作为建议。随着时间发展, Overlay2 驱动正在逐渐流行,可能在未来会成为大多数平台上的推荐存储驱动。如果读者使用Docker企业版(EE),并且有技术支持合约,建议通过咨询获取最新的兼容矩阵。

继续回到正题。

默认情况下,容器的所有存储都使用本地存储。所以默认情况下容器全部目录都是用该存储。

如果容器不产生持久化数据,那么本地存储即可满足需求并且能够正常使用。但是如果容器确实需要持久化数据,就需要阅读13.2.2节了。

results matching ""

    No results matching ""